{"version":3,"file":"static/chunks/pages/[[...page]]-f0172432072162d3.js","mappings":"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","sources":["webpack://_N_E/?08f1","webpack://_N_E/./components/molecules/AnchorNavigation/AnchorNavigation.js","webpack://_N_E/./components/global/PageContent.js","webpack://_N_E/./pages/[[...page]].js","webpack://_N_E/./node_modules/next/error.js"],"sourcesContent":["\n    (window.__NEXT_P = window.__NEXT_P || []).push([\n      \"/[[...page]]\",\n      function () {\n        return require(\"private-next-pages/[[...page]].js\");\n      }\n    ]);\n    if(module.hot) {\n      module.hot.dispose(function () {\n        window.__NEXT_P.push([\"/[[...page]]\"])\n      });\n    }\n  ","import PropTypes from 'prop-types';\nimport cn from 'class-names';\nimport { useEffect } from 'react';\n\nimport { getContent } from '@/utils/helper';\nimport { analytics, getAnchorNavigationDetail } from '@/utils/analytics';\n\nimport CtfCta from '@/molecules/CTA/index';\n\nconst MAXIMUM_POSITION_TOP_ACTIVE_PX = 200;\nexport default function AnchorNavigation({\n  anchor: { sys: { id: anchorId } } = {},\n  entries,\n}) {\n  const handleAnchorNavigate = (e) => {\n    analytics({\n      window,\n      document,\n      detail: getAnchorNavigationDetail(e),\n    });\n  };\n\n  const anchorContent = getContent(anchorId, entries);\n  const fields = anchorContent?.fields;\n\n  // listen to scroll events and update anchor navigation active status\n  useEffect(() => {\n    if (!fields?.links?.length) {\n      return;\n    }\n\n    const handleScroll = () => {\n      // add/remove anchor class on scroll\n      const anchorNavs = document.querySelectorAll(\n        '.aaco-anchor-navigation > div > a'\n      );\n      const anchorNavsSize = anchorNavs?.length || 0;\n      anchorNavs?.forEach((anchor, index) => {\n        // 1. get CURRENT anchor position\n        const id = anchor?.getAttribute('href');\n        const targetElement = document.querySelector(id);\n        if (!targetElement) {\n          return;\n        }\n        const targetElementPositon = targetElement?.getBoundingClientRect();\n\n        // 2. get NEXT anchor position\n        const nextIndex = index + 1;\n        const hasNextIndex = nextIndex < anchorNavsSize;\n        let nextTargetElementPositon;\n        if (hasNextIndex) {\n          const nextAnchor = anchorNavs[nextIndex];\n          const nextId = nextAnchor?.getAttribute('href');\n          const nextTargetElement = document.querySelector(nextId);\n\n          if (nextTargetElement) {\n            nextTargetElementPositon =\n              nextTargetElement?.getBoundingClientRect();\n          }\n        }\n\n        // 3. check if\n        ////// - current anchor top is in the active range\n        const isInActiveRange =\n          targetElementPositon.top < MAXIMUM_POSITION_TOP_ACTIVE_PX;\n        ////// - next anchor top is outside the active range\n        const isNextAnchorOutsideActiveRange =\n          nextTargetElementPositon?.top > MAXIMUM_POSITION_TOP_ACTIVE_PX;\n        ////// purpose: only mark the last active anchor as active\n        const isLastAnchorInActiveRange =\n          isInActiveRange && (!hasNextIndex || isNextAnchorOutsideActiveRange);\n        if (isLastAnchorInActiveRange) {\n          anchor.classList.add('active');\n        } else {\n          anchor.classList.remove('active');\n        }\n      });\n    };\n    window.addEventListener('scroll', handleScroll);\n    return () => document.removeEventListener('scroll', handleScroll);\n  }, [fields?.links]);\n\n  return (\n    <div\n      className={cn(\n        'aaco-anchor-navigation hidden-print w-full h-[68px] overflow-x-scroll md:overflow-x-auto',\n        'flex content-center items-center',\n        'px-8 md:px-14 z-[75]'\n      )}\n    >\n      {fields?.links?.length > 0 &&\n        fields.links.map((field) => (\n          <div key={field?.sys?.id} id=\"\">\n            <CtfCta\n              entries={entries}\n              field={field}\n              noWrap\n              hideIcon={true}\n              onClick={handleAnchorNavigate}\n              className=\"mr-[30px] text-acacia\"\n            />\n          </div>\n        ))}\n    </div>\n  );\n}\n\nAnchorNavigation.propTypes = {\n  anchor: PropTypes.object,\n  entries: PropTypes.array,\n};\n","import { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { analytics, getScrollToTopDetail } from '@/utils/analytics';\nimport { isDDEnv, isWHEnv } from '@/utils/helper';\n\nimport ButtonIcon from '@/atoms/ButtonIcon/ButtonIcon';\n\nexport default function PageContent({ children, anchorNavigation }) {\n  const [showButton, setShowButton] = useState(false);\n  const [showAnchor, setShowAnchor] = useState(false);\n\n  useEffect(() => {\n    const handleScroll = () => {\n      const hasOverflow = window.pageYOffset > 200;\n      setShowButton(hasOverflow);\n\n      const windowHeight = window.innerHeight;\n      const hasOverflowExceedWindowHeight = window.pageYOffset > windowHeight;\n      setShowAnchor(hasOverflowExceedWindowHeight);\n    };\n\n    window.addEventListener('scroll', handleScroll);\n\n    return () => document.removeEventListener('scroll', handleScroll);\n  }, []);\n\n  const scrollToTop = (e) => {\n    analytics({\n      window,\n      document,\n      detail: getScrollToTopDetail(e),\n    });\n\n    window.scrollTo({\n      top: 0,\n      behavior: 'smooth',\n    });\n  };\n\n  const isWH = isWHEnv();\n  const isDD = isDDEnv();\n  return (\n    <>\n      {children}\n      {showAnchor && isWH && anchorNavigation}\n      {showButton && (\n        <>\n          {isDD && anchorNavigation}\n          <div className=\"aaco-back-to-top z-10 fixed bottom-16 w-fit right-0\">\n            <ButtonIcon\n              style=\"bg-acacia h-10 mr-[35px] lg:mr-[31px] hover:bg-white hover:border-warm-grey text-white hover:text-acacia shadow-back-to-top dd-kr:shadow-none dd-en:shadow-none\"\n              onClick={scrollToTop}\n              icon=\"arrow-up\"\n              role=\"button\"\n              width={6.74}\n              height={11.67}\n            />\n          </div>\n        </>\n      )}\n    </>\n  );\n}\n\nPageContent.propTypes = {\n  children: PropTypes.node,\n  anchorNavigation: PropTypes.node,\n};\n","import { useContext, useEffect, useRef, useState } from 'react';\nimport ErrorPage from 'next/error';\nimport Head from 'next/head';\nimport PropTypes from 'prop-types';\nimport { useRouter } from 'next/router';\n\nimport { DispatchContext } from '@/context/index';\n\nimport {\n  getAllPages,\n  getPage,\n  getDynamicPages,\n  getTagsByTagGroupId,\n  getAllTagGroups,\n  getAllEnvironments,\n  switchEnvironment,\n  getTotalRequests,\n  getRequests,\n  switchToPreview,\n  switchToMain,\n  getTagsByIds,\n  resetCache,\n} from '@/utils/api';\nimport {\n  getContent,\n  findContentIndex,\n  findOneContentByType,\n  isDDEnv,\n  isWHEnv,\n} from '@/utils/helper';\n\nimport AnchorNavigation from '@/molecules/AnchorNavigation/AnchorNavigation';\nimport BlockRenderer from '@/global/BlockRenderer';\nimport PageContent from '@/global/PageContent';\n\nimport {\n  CtfPageSlug,\n  CtfTags,\n  PaginationDefaults,\n  CtfContentQueryOrder,\n  ContentQueryOrder,\n} from '@/utils/constants';\n\nfunction Page({\n  page,\n  assets,\n  entries,\n  customEnvironment,\n  robotsIndex,\n  pageTags,\n  showVersion,\n}) {\n  const router = useRouter();\n  const dispatch = useContext(DispatchContext);\n  const container = useRef(null);\n  useEffect(() => {\n    if (customEnvironment) {\n      dispatch({\n        \"type\": \"SET_ENVIRONMENT\",\n        \"payload\": customEnvironment,\n      });\n\n      switchEnvironment(customEnvironment);\n    }\n  }, [customEnvironment, dispatch])\n\n  const anchorNavigation = findOneContentByType(\n    'anchorNavigation',\n    page,\n    entries\n  );\n\n  const pagePreviewContent =\n    page?.fields?.metaDescription ? page?.fields.metaDescription : page?.fields?.previewText &&\n    getContent(page?.fields?.previewText?.sys?.id, entries)?.fields?.text\n      ?.content?.[0]?.content?.[0]?.value;\n  const hostname = process.env.NEXT_PUBLIC_URL ?? '/';\n  const canonicalHost = process.env.NEXT_PUBLIC_URL_WWW ?? '/';\n  const pageUrl = `${canonicalHost}${router?.asPath}`;\n  const navigationColor = page?.fields?.navigationColor ?? 'warmer-grey';\n  const pageNoIndexNoFollow = !!page?.fields?.noIndexNoFollow;\n\n  const isDD = isDDEnv();\n  const isWH = isWHEnv()\n\n  const showDefaultAnchorNavigation = isDD\n\n\n  return (\n       <div className={`app-container`} ref={container} aria-label={page?.fields.slug}>\n        <Head>\n          {pagePreviewContent && (\n            <meta name=\"description\" content={pagePreviewContent} />\n          )}\n          {page?.fields.slug === 'our-cuts' && (<>\n            <link rel=\"alternate\" href={`${hostname}/us/our-cuts`} hrefLang=\"en-us\" />\n            <link rel=\"alternate\" href={`${hostname}/au/our-cuts`} hrefLang=\"en-au\" />\n          </>)}\n          <link rel=\"canonical\" href={page?.fields?.canonicalTag ?? pageUrl} />\n          {(!robotsIndex || pageNoIndexNoFollow) && (\n            <meta name=\"robots\" content=\"none\" />\n          )}\n          <title>{page.fields.title}</title>\n        </Head>\n        <PageContent\n          anchorNavigation={\n            showDefaultAnchorNavigation &&\n            anchorNavigation && (\n              <AnchorNavigation\n                anchor={anchorNavigation}\n                assets={assets}\n                entries={entries}\n              />\n            )\n          }\n        >\n          <BlockRenderer\n            blocks={page.fields.content}\n            tags={pageTags}\n            slug={page.fields?.slug}\n            assets={assets}\n            entries={entries}\n            pageTitle={page.fields.title}\n            showVersion={showVersion}\n            anchorNavigation={anchorNavigation}\n            navigationColor={navigationColor}\n          />\n        </PageContent>\n      </div>\n  );\n}\n\nPage.propTypes = {\n  page: PropTypes.object,\n};\n\nexport default Page;\n\nexport async function getStaticProps({ preview = false, params, locale }) {\n  let page = null;\n  let entries = [];\n  let assets = [];\n  let customEnvironment = null;\n  let robotsIndex = true;\n  let showVersion = false;\n\n  if (process.env.APP_ENV !== 'production') {\n    robotsIndex = false;\n    showVersion = true;\n\n    const environments = (await getAllEnvironments())?.data?.items?.map((i) => i.name);\n    if (params.page && environments.includes(params.page[0])) {\n      switchEnvironment(params.page[0]);\n      customEnvironment = params.page[0];\n      params.page = params.page.splice(1);\n    }\n  }\n\n  if (preview) {\n    switchToPreview();\n  } else {\n    switchToMain();\n  }\n\n  // TODO: Confirm if we use slug='home' as the homepage identifier.\n  const payload = {\n    slug: params.page && params.page.length ? params.page[0] : CtfPageSlug.HOME,\n    preview,\n  };\n\n  // Reset cache because Azure Function might treat this as a long-running process which would prevent static cache\n  // from updating properly\n  resetCache();\n  const resp = await getPage(payload, 10, locale);\n  if (resp.status !== 200 || !resp.data || resp.data.items.length === 0) {\n    return {\n      notFound: true,\n      revalidate: true,\n    };\n  }\n\n  // Set the page data\n  page = resp.data?.items?.[0] || {};\n\n  // Supply the entries and assets\n  if (resp.data?.includes) {\n    entries = resp.data.includes?.Entry ?? [];\n    assets = resp.data.includes?.Asset ?? [];\n  }\n\n  const pageTags = page.fields?.['tags']?.map((tag) => entries.find((entry) => entry?.sys?.id === tag?.sys?.id)) || null;\n\n  const getEntriesToProcess = (links) => {\n    let entryIds = [];\n    links.forEach((link) => {\n      entryIds.push(link.sys.id);\n      const content = getContent(link.sys.id, entries);\n\n      if (!content) {\n        return;\n      }\n\n      Object.entries(content.fields).forEach(([entry, field]) => {\n        // This method is mostly to avoid recursively resolving sub-page data\n        if (\n          !field ||\n          (entry === 'content' && content.sys.contentType.sys.id === 'page' && content.fields.slug !== page.fields.slug)\n        ) {\n          return;\n        }\n\n        if (field.sys && field.sys.id) {\n          entryIds = [...getEntriesToProcess([field]), ...entryIds];\n        } else if (field[0] && field[0].sys && field[0].sys.id) {\n          entryIds = [...getEntriesToProcess(field), ...entryIds];\n        }\n      });\n    });\n\n    return entryIds;\n  };\n\n  const contentToProcess = [\n    ...(page?.fields?.content || []),\n    page?.fields?.previewText,\n  ].filter((content) => content);\n  const entryIds = contentToProcess\n    ? getEntriesToProcess(contentToProcess)\n    : [];\n  entries = entries.filter(c => entryIds.includes(c.sys.id) || ['tag', 'tagGroup'].includes(c.sys.contentType.sys.id));\n  entries.push(page);\n\n  // Do a loop of page's content and check each component for:\n  // - if it has queryTags field then fetch the required data and store it in fields.pages\n  // - if it has tagGroups field then fetch the tags for each tagGroup\n  let newEntries = [];\n  let newAssets = [];\n  entries = await (entries ? Promise.all(\n    entries.map(async (content) => {\n      // Strip away unnecessary fields\n      content = {\n        sys: {\n          id: content?.sys?.id,\n          contentType: {\n            sys: {\n              id: content?.sys?.contentType?.sys?.id,\n            }\n          }\n        },\n        fields: content.fields,\n      };\n\n      if (!entryIds.includes(content.sys.id)) {\n        return content;\n      }\n\n      if (content.sys.contentType.sys.id === 'navigation') {\n        //fetch all tagGroups and it tags for search area\n        const resp = await getAllTagGroups(preview);\n\n        //construct array of object of tagGroup with tags\n        let tagGroupsWithTags = null;\n        if (resp.data.items) {\n          tagGroupsWithTags = await Promise.all(\n            Object.values(resp.data.items).map(async (j) => {\n              const tags = await getTagsByTagGroupId(j.sys.id);\n              return {\n                id: j.sys.id,\n                name: j.fields.name ?? null,\n                slug: j.fields.slug || null,\n                tags:\n                  tags?.data?.items && Object.keys(tags?.data?.items)?.length > 0\n                    ? Object.values(tags.data.items)?.map((k) => {\n                        return {\n                          id: k.sys.id,\n                          name: k.fields.name ?? null,\n                          slug: k.fields.slug ?? '',\n                        };\n                      }) || null\n                    : null,\n              };\n            })\n          );\n        }\n\n        //store tabGroupsWithTags data in fields.tagGroupsWithTags\n        content = {\n          ...content,\n          fields: {\n            ...content.fields,\n            tagGroupsWithTags: tagGroupsWithTags || null,\n          },\n        };\n      }\n\n      if (content.fields.queryTags) {\n        //handle default tags/filters\n        const queryTagIds = content.fields.queryTags.map((j) => j.sys.id);\n        //handle pagination\n        let paginationNo = 1;\n        let paginationLimit = PaginationDefaults.LIMIT;\n        if (params.page && params.page[1] && !isNaN(params.page[1])) {\n          paginationNo = params.page[1];\n        }\n\n        if (content.fields.queryTagsLimit) {\n          paginationLimit = content.fields.queryTagsLimit;\n        } else if (content.sys.contentType.sys.id === 'navigationLink') {\n          paginationLimit = 1;\n        } else if (content.sys.contentType.sys.id === 'cut') {\n          paginationLimit = 3;\n        }\n\n        // Special case for Content Grid to have custom cards injected into them\n        let offset = content.fields.queryTagsOffset ?? (paginationNo - 1) * paginationLimit;\n        if (\n          content.sys.contentType.sys.id === 'contentGrid' &&\n          content.fields.cards\n        ) {\n          if (paginationNo <= content.fields.cards.length) {\n            paginationLimit = paginationLimit - 1;\n          } else {\n            offset =\n              content.fields.cards.length * (paginationLimit - 1) +\n              (paginationNo - content.fields.cards.length - 1) *\n                paginationLimit +\n              1;\n          }\n        }\n\n        // Fetch Pages data & append new assets & entries\n        const dynamicPages = await getDynamicPages(\n          null,\n          queryTagIds,\n          paginationNo,\n          paginationLimit,\n          [...assets, ...newAssets],\n          [...entries, ...newEntries],\n          locale,\n          offset,\n          page.sys.id,\n          ['cut', 'contentGrid'].includes(content.sys.contentType.sys.id) ? 'in' : 'all',\n          CtfContentQueryOrder.CREATE_DATE === content.fields.contentQueryOrder\n            ? ContentQueryOrder.CREATE_DATE\n            : ContentQueryOrder.PUBLISH_DATE,\n          preview\n        );\n        newAssets = [...newAssets, ...dynamicPages.filteredNewAssets];\n        // Quick optimisation, only keep dynamic assets and taxonomy from these pages\n        // Added blockText to the filter list since carousel component needs the entry data\n        newEntries = [...newEntries, ...dynamicPages.filteredNewEntries.filter((p) => ['dynamicAsset', 'tag', 'tagGroup', 'blockText'].includes(p.sys.contentType.sys.id))];\n        // Replace current Entry data with Entry with appended pages data\n        // So that later it can be called using fields.pages\n        // Also store default tag/filter in fields.queryTagIds\n        content = {\n          ...content,\n          fields: {\n            ...content.fields,\n            pages: dynamicPages.resp?.data.items ?? [],\n            totalPages: dynamicPages.resp?.data.total ?? 0,\n            queryTagIds,\n          },\n        };\n      }\n\n      if (content.fields.tagGroups) {\n        //get tagGroupIds\n        const tagGroupIds = content.fields.tagGroups.map((j) => j.sys.id);\n\n        //construct array of object of tagGroup with tags\n        const tagGroupsWithTags =\n          tagGroupIds?.length > 0\n            ? await Promise.all(\n                tagGroupIds.map(async (j) => {\n                  const tagGroup = getContent(j, entries);\n                  const tags = await getTagsByTagGroupId(j);\n                  return {\n                    id: tagGroup.sys.id,\n                    name: tagGroup.fields.name ?? null,\n                    slug: tagGroup.fields.slug,\n                    tags:\n                      tags?.data?.items?.length > 0\n                        ? tags.data.items\n                            ?.map((k) => {\n                              return {\n                                id: k.sys.id,\n                                name: k.fields.name ?? null,\n                                slug: k.fields.slug ?? '',\n                              };\n                            })\n                            ?.filter((k) => k.name) || null\n                        : null,\n                  };\n                })\n              )\n            : null;\n\n        //store tabGroupsWithTags data in fields.tagGroupsWithTags\n        content = {\n          ...content,\n          fields: {\n            ...content.fields,\n            tagGroupsWithTags,\n          },\n        };\n      }\n\n      return content;\n    })\n  )\n  : null);\n\n  const existingEntryIds = entries.map((j) => j.sys.id);\n  newEntries.forEach((j) => !existingEntryIds.includes(j.sys.id) ? entries.push(j) : undefined);\n\n  const existingAssetIds = assets.map((j) => j.sys.id);\n  newAssets.forEach((j) =>\n    !existingAssetIds.includes(j.sys.id) ? assets.push(j) : undefined\n  );\n\n  const filteredAssets = [];\n  entries.forEach(e => {\n    Object.values(e.fields).forEach(v => {\n      if (v && v.sys && v.sys.linkType && v.sys.linkType === 'Asset') {\n        filteredAssets.push(v.sys.id);\n      }\n    });\n  });\n\n  assets = assets.filter(a => filteredAssets.includes(a.sys.id));\n\n  const ret = {\n    props: { preview, assets, entries, page, customEnvironment, robotsIndex, showVersion, pageTags },\n    revalidate: 300,\n  };\n\n  if (\n    process.env.APP_ENV === 'development' ||\n    process.env.APP_ENV === 'staging'\n  ) {\n    ret.revalidate = 10;\n  }\n\n  if (\n    resp.data.items.length === 0 ||\n    preview ||\n    (params.page && params.page[1])\n  ) {\n    ret.revalidate = 0;\n  }\n\n  return ret;\n}\n\nexport async function getStaticPaths() {\n  return {\n    paths: [],\n    fallback: 'blocking',\n  };\n}\n","module.exports = require('./dist/pages/_error')\n"],"names":["window","__NEXT_P","push","AnchorNavigation","fields","anchor","id","sys","entries","handleAnchorNavigate","e","analytics","document","detail","getAnchorNavigationDetail","anchorContent","getContent","anchorId","useEffect","links","length","handleScroll","anchorNavs","querySelectorAll","anchorNavsSize","forEach","index","getAttribute","targetElement","querySelector","nextTargetElementPositon","targetElementPositon","getBoundingClientRect","nextIndex","hasNextIndex","nextAnchor","nextId","nextTargetElement","isInActiveRange","top","isNextAnchorOutsideActiveRange","classList","add","remove","addEventListener","removeEventListener","div","className","cn","map","field","CtfCta","noWrap","hideIcon","onClick","propTypes","PropTypes","PageContent","children","anchorNavigation","useState","showButton","setShowButton","showAnchor","setShowAnchor","hasOverflow","pageYOffset","windowHeight","innerHeight","hasOverflowExceedWindowHeight","isWH","isWHEnv","isDD","isDDEnv","ButtonIcon","style","getScrollToTopDetail","scrollTo","behavior","icon","role","width","height","Page","page","assets","customEnvironment","robotsIndex","pageTags","showVersion","router","useRouter","dispatch","useContext","DispatchContext","container","useRef","switchEnvironment","process","findOneContentByType","pagePreviewContent","metaDescription","previewText","text","content","value","hostname","canonicalHost","pageUrl","asPath","navigationColor","pageNoIndexNoFollow","noIndexNoFollow","showDefaultAnchorNavigation","ref","aria-label","slug","Head","meta","name","link","rel","href","hrefLang","canonicalTag","title","BlockRenderer","blocks","tags","pageTitle","module","exports"],"sourceRoot":""}